{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Accreditation protocol"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Accreditation Protocol (AP) is a protocol devised to characterize the reliability of noisy quantum devices.<br>\n",
    "\n",
    "Given a noisy quantum device implementing a \"target\" quantum circuit, AP certifies an upper-bound on the variation distance between the probability distribution of the outputs returned by the device and the ideal probability distribution.\n",
    "This method is based on Ferracin et al, \"Accrediting outputs of noisy intermediate-scale quantum devices\", https://arxiv.org/abs/1811.09709.\n",
    "\n",
    "This notebook gives an example for how to use the ignis.characterization.accreditation module. This particular example shows how to accredit the outputs of a 4-qubit quantum circuit of depth 5. All the circuits are run using the noisy Aer simulator."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Import general libraries (needed for functions)\n",
    "import numpy as np\n",
    "from numpy import random\n",
    "import qiskit\n",
    "\n",
    "#Import Qiskit classes\n",
    "from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister, Aer, execute\n",
    "from qiskit.providers.aer.noise import NoiseModel\n",
    "from qiskit.providers.aer.noise.errors.standard_errors import depolarizing_error\n",
    "\n",
    "#Import the accreditation functions.\n",
    "from qiskit.ignis.verification.accreditation import AccreditationFitter,AccreditationCircuits\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Input to the protocol"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "AP can accredit the outputs of a __target circuit__ that<br>\n",
    "1) Takes as input $n$ qubits in the state $|{0}>$<br>\n",
    "2) Ends with single-qubit measurements in the Pauli-$Z$ basis<br>\n",
    "3) Is made of $m$ \"bands\", each band containing a round of single-qubit gates and a round of controlled-$Z$ gates.<br>\n",
    "The accreditation is made by employing __trap circuits__, circuits that can be efficiently simulated on a classical computer and that whose outputs are used to witness the correct functionality of the device.<br>\n",
    "\n",
    "Let's now draw a target quantum circuit!\n",
    "We start with a simple circuit to generate and measure 4-qubits GHZ states."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 742.777x325.08 with 1 Axes>"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Create a Quantum Register with n_qb qubits.\n",
    "q_reg = QuantumRegister(4, 'q')\n",
    "# Create a Classical Register with n_qb bits.\n",
    "c_reg = ClassicalRegister(4, 's')\n",
    "# Create a Quantum Circuit acting on the q register\n",
    "target_circuit = QuantumCircuit(q_reg, c_reg)\n",
    "\n",
    "target_circuit.h(0)\n",
    "target_circuit.h(1)\n",
    "target_circuit.h(2)\n",
    "target_circuit.h(3)\n",
    "target_circuit.cz(0,1)\n",
    "target_circuit.cz(0,2)\n",
    "target_circuit.h(1)\n",
    "target_circuit.h(2)\n",
    "target_circuit.cz(0,3)\n",
    "target_circuit.cz(1,2)\n",
    "target_circuit.h(1)\n",
    "target_circuit.h(2)\n",
    "target_circuit.h(3)\n",
    "\n",
    "target_circuit.measure(q_reg, c_reg)\n",
    "\n",
    "target_circuit.draw(output = 'mpl')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Generating accreditation circuits"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The function $accreditation\\_circuits$ generates all the circuits required by AP, target and traps. It automatically appends random Pauli gates to the circuits (if the implementation is noisy, these random Pauli gates reduce the noise to Pauli errors ! ) <br>\n",
    "\n",
    "It also returns the list $postp\\_list$ of strings required to post-process the outputs, as well as the number $v\\_zero$ indicating the circuit implementing the target.\n",
    "\n",
    "This is the target circuit with randomly chosen Pauli gates:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9gAAAEDCAYAAADOTKy0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzdeXxM9/4/8NdMViQEEaQRJEKWSmNJG2sWKtpeVf2itFcvdauNaItqtbdXUa0fvb2kWnrpptvlWktvq63KgqqdWpKUCCIEsSSELJKZ3x9zhWxnJpw5n3PmvJ6Ph0cnk8+ceefd9ycn7znnfI7BbDabQURERERERER3xSg6ACIiIiIiIiJHwAabiIiIiIiISAZssImIiIiIiIhkwAabiIiIiIiISAZssImIiIiIiIhkwAabiIiIiIiISAZssImIiIiIiIhkwAabiIiIiIiISAZssImIiIiIiIhkwAabiIiIiIiISAZssImIiIiIiIhkwAabiIiIiIiISAZssImIiIiIiIhkwAabiIiIiIiISAZssImIiIiIiIhkwAabiIiIiIiISAZssImIiIiIiIhkwAabiIiIiIiISAZssImIiIiIiIhk4Cw6ACJRMjMzrY758MMPMWHCBMkxwcHBcoXksJhr5TDXypEj18yz4+JcJCmsDyLHxSPYRBIWLlwoOgTdYK6Vw1wrh7kmKawPksL6INImNthEREREREREMmCDTURERERERCQDNthEElatWiU6BN1grpXDXCuHuSYprA+Swvog0iY22EREREREREQyYINNJGHo0KGiQ9AN5lo5zLVymGuSwvogKawPIm3ibbocQMW6PTCfKRAdRiWDrxecBncTHQaRVSLnDucJaZGoOcP5QqQcLc7ziRMnYv/+/TJHZJuIiAgkJSUJeW9SJzbYDsB8pgDm7POiwyDSHM4dovrhnCFyfFqc5/v370daWproMIgA8BRxIkmJiYmiQ9AN5lo5zLVymGuSwvogKawPIm1ig00kYcKECaJD0A3mWjnMtXKYa5LC+iAprA8ibWKDTSShb9++okPQDeZaOcy1cphrksL6ICmsDyJtYoNNJCE/P190CLrBXCuHuVYOc01SWB8khfVBpE1ssHUoaMmL+CZ9q83PE+kd5wyR7ThfiBwf5zlR3dhgE0kIDQ0VHYJuMNfK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\n",
      "text/plain": [
       "<Figure size 1284.58x325.08 with 1 Axes>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "accsys = AccreditationCircuits(target_circuit)\n",
    "\n",
    "v = 10\n",
    "\n",
    "circ_list, postp_list, v_zero = accsys.generate_circuits(v)\n",
    "circ_list[(v_zero)%(v+1)].draw(output = 'mpl')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This is how a trap looks like:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1465.18x325.08 with 1 Axes>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "circ_list[(v_zero+1)%(v+1)].draw(output = 'mpl')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "One can use the optional twoqubitgate argument to switch use cx instead of cz gates and can arbitrarily change the coupling map, in order to compile to the desired device topology (which in this case might lead to more layers than expected)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABOgAAAMlCAYAAADJ7swNAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzde3gV5b0v8O9aKyEJBAgSwi2AXAK5KBcRuSgkIFZEK+pBBLu9UCpuLtuKpad2WwSK9VQPR7q3FWpbWqxakJtVK7qrkESRAqIoQsAAAUIkQLiEkBACyVrnjymXQLLWrGTW+/5m5vt5Hh5hMpn8/D6/dy5vZs14AoFAAERERERERERERKSFV3cBREREREREREREbsYJOiIiIiIiIiIiIo04QUdERERERERERKQRJ+iIiIiIiIiIiIg04gQdERERERERERGRRpygIyIiIiIiIiIi0ogTdERERERERERERBpxgo6IiIiIiIiIiEgjTtARERERERERERFpxAk6IiIiIiIiIiIijThBR0REREREREREpBEn6IiIiIiIiIiIiDTiBB0REREREREREZFGnKAjIiIiIiIiIiLSiBN0REREREREREREGnGCjoiIiIiIiIiISCNO0BEREREREREREWnECToiIiIiIiIiIiKNOEFHRERERERERESkESfoiIiIiIiIiIiINIrSXQCRLrt27Qq5zm9/+1tMnz496DqpqalWleRYzFodZq2OFVkzZ3NCZc2etgb3H+owa3WYNYXC47k6PJ6rwf2effEOOqIgXnnlFd0luAazVodZq8Os1WDO6jBrdZi1OsyaQmGPqMGc1WHWMnGCjoiIiIiIiIiISCNO0BEREREREREREWnECTqiIFauXKm7BNdg1uowa3WYtRrMWR1mrQ6zVodZUyjsETWYszrMWiZO0BEREREREREREWnECTqiIMaOHau7BNdg1uowa3WYtRrMWR1mrQ6zVodZUyjsETWYszrMWqYo3QWQtWre+QKBQ6XKf66nQwJ8Y/or/7lEjaFrvAAcM0RERBQ5vCYgMo/XBCQFJ+gcJnCoFIGCo7rLILIFjhciIiJyIp7jEJnH8UJS8COuREFMmzZNdwmuwazVYdbqMGs1mLM6zFodZq0Os6ZQ2CNqMGd1mLVMnKAjCmL69Om6S3ANZq0Os1aH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t+4ermeWvWegSt/ZnHWgsTlr1rVzyspakv56x+OalDLQ6dKAComKitKECRO0Z88ezZo1SyNGjFBKSopatmyp5ORk3XvvvXrxxRf19ddfa+XKlerVq5ekC825oUOHKj4+XgkJCYa/EgAAEIysvgbd4MGDNXfuXI0bN05t27bVihUrNGDAAB06dEijRo0yXV7QO1dQ1KDzp8UbpPi6/p0zUDWOqa1tOQdKbMs9e1r7T+bohpg4hV10543jZ06pZe1GTpcIlBvr2jllZS1JDatzJBHcoV27dnr77bd14403SpLWrFmj2bNn6+uvv1Z2drbCw8PVokULde7cWQMHDlTHjh318ccf64033lBhYaEGDx6svLw8/eQnP9Hy5dzFGAAAOM/aBt3MmTM1Y8YMZWRkKCUlRZLUrVs3rV69WnPnzi319AQ465ss6eQZ/865dX/RDSfiuARMmR5K6qrRS99SryatdUv9eJ04e0pjMt7VTbGNlFzneknSzpyDGvTRdG09mq2/9B5qtmDAB6xr5/iSNeAGqamp+vDDD3XNNddow4YNSktL06effnrZuNWrV+vdd9/Vr371Kz355JOaMGGCHn30UUkqbs598sknTpcPAAAgyeIG3UsvvaTevXsXN+fOa9asmSIiItSqVStJUp8+fbRjxw6FhYUpIiJCL730knr27GmiZMdkZmaaLkGStKWSTkf9br89DTpbsi7NwMRblZd/Vk8tflNZJw6rWpUo3dYwQfPuHa3w/5ye1qRmnDIGPK8dOQfUa9ZvdFdTexvbNmcdaGzOmnXtHF+yBmwXHx+v999/X9dcc41mzJihxx9/XGfOeP/rYV5enn73u9+pbdu26tevnyTpm2++oTkHAACMsrJBt3fvXq1fv14jR4687HNZWVlKSkpSZGSkJGnGjBmqWbOmpKLTGVJTU3X06FGFhQXuLxcbNmxQXFyc6TK090jlzLvHT9e08wdbsr6Swa26a3Cr7qV+7kz+OUWGR0iSalSJ1jURUU6WVm62Zx1IbM+ade0cb1kDtgsNDdWbb76p6tWra9asWXr00UdVWFhY5n7nrznXr18/nT59WmfPnlWnTp306KOP6o033nCgcgAAgMtZ26CTpLp1S16MLC8vT5mZmbrjjjuKt51vzknS8ePHFRIS4tObM1+dP/ohJCSkzLG+jClLaU3JS02dOrXMcVOn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\n",
      "text/plain": [
       "<Figure size 1645.78x1047.48 with 1 Axes>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "accsys.target_circuit(target_circuit, two_qubit_gate='cx', coupling_map=[[0,1],[1,2],[2,3]] )\n",
    "\n",
    "v = 10\n",
    "\n",
    "circ_list, postp_list, v_zero = accsys.generate_circuits(v)\n",
    "circ_list[(v_zero)%(v+1)].draw(output = 'mpl')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Simulate the ideal circuits"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's implement AP.\n",
    "\n",
    "We use $accreditation\\_circuits$ to generate target and trap circuits.\n",
    "Then, we use the function $single\\_protocol\\_run$ to implement all these circuits, keeping the output of the target only if all of the traps return the correct output."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Outputs of the target:  ['0100']  , AP accepted these outputs!\n"
     ]
    }
   ],
   "source": [
    "simulator = qiskit.Aer.get_backend('qasm_simulator')\n",
    "\n",
    "test_1 = AccreditationFitter()\n",
    "\n",
    "# Create target and trap circuits with random Pauli gates\n",
    "accsys = AccreditationCircuits(target_circuit)\n",
    "circuit_list, postp_list, v_zero = accsys.generate_circuits(v)\n",
    "\n",
    "\n",
    "job = execute(circuit_list,\n",
    "              simulator,\n",
    "              shots=1)\n",
    "result = job.result()\n",
    "# Post-process the outputs and see if the protocol accepts\n",
    "test_1.single_protocol_run(result, postp_list, v_zero)\n",
    "\n",
    "print(\"Outputs of the target: \",test_1.outputs,\" , AP\",test_1.flag,\"these outputs!\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In the absence of noise, all traps return the expected output, therefore we always accept the output of the target.<br>\n",
    "\n",
    "To obtain an upper-bound on the variation distance on the outputs of the target circuit, we need to implement AP $d$ times, each time with ___v___ different trap circuits."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Protocol run number 1 , outputs of the target accepted\n",
      "Protocol run number 2 , outputs of the target accepted\n",
      "Protocol run number 3 , outputs of the target accepted\n",
      "Protocol run number 4 , outputs of the target accepted\n",
      "Protocol run number 5 , outputs of the target accepted\n",
      "Protocol run number 6 , outputs of the target accepted\n",
      "Protocol run number 7 , outputs of the target accepted\n",
      "Protocol run number 8 , outputs of the target accepted\n",
      "Protocol run number 9 , outputs of the target accepted\n",
      "Protocol run number 10 , outputs of the target accepted\n",
      "Protocol run number 11 , outputs of the target accepted\n",
      "Protocol run number 12 , outputs of the target accepted\n",
      "Protocol run number 13 , outputs of the target accepted\n",
      "Protocol run number 14 , outputs of the target accepted\n",
      "Protocol run number 15 , outputs of the target accepted\n",
      "Protocol run number 16 , outputs of the target accepted\n",
      "Protocol run number 17 , outputs of the target accepted\n",
      "Protocol run number 18 , outputs of the target accepted\n",
      "Protocol run number 19 , outputs of the target accepted\n",
      "Protocol run number 20 , outputs of the target accepted\n",
      "\n",
      "After 20 runs, AP has accepted 20 outputs!\n",
      "\n",
      "List of accepted outputs:\n",
      " ['0100', '0010', '1011', '1001', '0110', '1111', '1101', '0000', '1101', '0000', '0110', '1011', '0110', '1101', '0000', '0110', '1101', '0010', '1001', '1101', '0000']\n"
     ]
    }
   ],
   "source": [
    "# Number of runs\n",
    "d = 20\n",
    "\n",
    "test_2 = AccreditationFitter()\n",
    "\n",
    "for run in range(d):\n",
    "    \n",
    "    # Create target and trap circuits with random Pauli gates\n",
    "    circuit_list, postp_list, v_zero = accsys.generate_circuits(v)\n",
    "    \n",
    "    \n",
    "    # Implement all these circuits\n",
    "    \n",
    "    job = execute(circuit_list,\n",
    "                  simulator,\n",
    "                  shots=1)\n",
    "    result = job.result()\n",
    "\n",
    "    # Post-process the outputs and see if the protocol accepts\n",
    "    test_2.single_protocol_run(result, postp_list, v_zero)\n",
    "    print(\"Protocol run number\",run+1,\", outputs of the target\",test_2.flag)\n",
    "    \n",
    "print('\\nAfter',test_2.num_runs,'runs, AP has accepted',test_2.N_acc,'outputs!')\n",
    "\n",
    "print('\\nList of accepted outputs:\\n', test_2.outputs)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The function $bound\\_variation\\_distance$ calculates the upper-bound on the variation distance (VD) using\n",
    "\n",
    "$$VD\\leq \\frac{\\varepsilon}{N_{\\textrm{acc}}/d-\\theta}\\textrm{ ,}$$\n",
    "\n",
    "where $\\theta\\in[0,1]$ is a positive number and<br>\n",
    "\n",
    "$$\\varepsilon= \\frac{1.7}{v+1}$$\n",
    "\n",
    "is the maximum probability of accepting an incorrect state for the target.<br>\n",
    "The function $bound\\_variation\\_distance$ also calculates the confidence in the bound as \n",
    "\n",
    "$$1-2\\textrm{exp}\\big(-2\\theta d^2\\big)$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AP accepted 20 out of 20 times.\n",
      "With confidence 1.0 AP certifies that VD is upper-bounded by 0.16267942583732053\n"
     ]
    }
   ],
   "source": [
    "theta = 5/100\n",
    "\n",
    "test_2.bound_variation_distance(theta)\n",
    "\n",
    "print(\"AP accepted\",test_2.N_acc,\"out of\",test_2.num_runs,\"times.\")\n",
    "print(\"With confidence\",test_2.confidence,\"AP certifies that VD is upper-bounded by\",test_2.bound)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Defining the noise model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We define a noise model for the simulator. We add depolarizing error probabilities to the controlled-$Z$ and single-qubit gates."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "noise_model = NoiseModel()\n",
    "\n",
    "p1q = 0.003\n",
    "noise_model.add_all_qubit_quantum_error(depolarizing_error(p1q, 1), 'u1')\n",
    "noise_model.add_all_qubit_quantum_error(depolarizing_error(p1q, 1), 'u2')\n",
    "noise_model.add_all_qubit_quantum_error(depolarizing_error(p1q, 1), 'u3')\n",
    "p2q = 0.03\n",
    "noise_model.add_all_qubit_quantum_error(depolarizing_error(p2q, 2), 'cx')\n",
    "\n",
    "basis_gates = ['u1','u2','u3','cx']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We then implement noisy circuits and pass their outputs to $single\\_protocol\\_run$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Protocol run number 1 , outputs of the target rejected\n",
      "Protocol run number 2 , outputs of the target rejected\n",
      "Protocol run number 3 , outputs of the target rejected\n",
      "Protocol run number 4 , outputs of the target rejected\n",
      "Protocol run number 5 , outputs of the target rejected\n",
      "Protocol run number 6 , outputs of the target rejected\n",
      "Protocol run number 7 , outputs of the target accepted\n",
      "Protocol run number 8 , outputs of the target rejected\n",
      "Protocol run number 9 , outputs of the target accepted\n",
      "Protocol run number 10 , outputs of the target rejected\n",
      "Protocol run number 11 , outputs of the target rejected\n",
      "Protocol run number 12 , outputs of the target rejected\n",
      "Protocol run number 13 , outputs of the target accepted\n",
      "Protocol run number 14 , outputs of the target rejected\n",
      "Protocol run number 15 , outputs of the target rejected\n",
      "Protocol run number 16 , outputs of the target rejected\n",
      "Protocol run number 17 , outputs of the target rejected\n",
      "Protocol run number 18 , outputs of the target accepted\n",
      "Protocol run number 19 , outputs of the target rejected\n",
      "Protocol run number 20 , outputs of the target rejected\n",
      "\n",
      "AP accepted 4 out of 20 times.\n",
      "\n",
      "List of accepted outputs:\n",
      " ['0100', '0010', '1011', '1001', '0110', '1111', '1101', '0000', '1101', '0000', '0110', '1011', '0110', '1101', '0000', '0110', '1101', '0010', '1001', '1101', '0000', '0100', '0110', '1111', '0100']\n",
      "\n",
      "With confidence 1.0 AP certifies that VD is upper-bounded by 1\n"
     ]
    }
   ],
   "source": [
    "test_3 = AccreditationFitter()\n",
    "\n",
    "for run in range(d):\n",
    "    \n",
    "    # Create target and trap circuits with random Pauli gates\n",
    "    circuit_list, postp_list, v_zero = accsys.generate_circuits(v)\n",
    "    job = execute(circuit_list,\n",
    "                  simulator,\n",
    "                  noise_model=noise_model,\n",
    "                  basis_gates=basis_gates,\n",
    "                  shots=1,\n",
    "                  backend_options={'max_parallel_experiments': 0})\n",
    "    result = job.result()\n",
    "    # Post-process the outputs and see if the protocol accepts\n",
    "    test_3.single_protocol_run(result, postp_list, v_zero)\n",
    "    print(\"Protocol run number\",run+1,\", outputs of the target\",test_3.flag)\n",
    "  \n",
    "print(\"\\nAP accepted\",test_3.N_acc,\"out of\",test_3.num_runs,\"times.\")\n",
    "print('\\nList of accepted outputs:\\n', test_3.outputs)\n",
    "\n",
    "theta = 5/100\n",
    "\n",
    "test_3.bound_variation_distance(theta)\n",
    "print(\"\\nWith confidence\",test_3.confidence,\"AP certifies that VD is upper-bounded by\",test_3.bound)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Changing the number of trap circuits per protocol run changes the upper-bound on the VD, but not the confidence.<br>\n",
    "\n",
    "What number of trap circuits will ensure the minimal upper-bound for your target circuit?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "With 4 traps, AP accepted 16 out of 20 times.\n",
      "With confidence 1.0 AP with 4 traps certifies that VD is upper-bounded by 0.45333333333333337\n",
      "\n",
      "With 5 traps, AP accepted 7 out of 20 times.\n",
      "With confidence 1.0 AP with 5 traps certifies that VD is upper-bounded by 0.9444444444444444\n",
      "\n",
      "With 6 traps, AP accepted 11 out of 20 times.\n",
      "With confidence 1.0 AP with 6 traps certifies that VD is upper-bounded by 0.48571428571428577\n",
      "\n",
      "With 7 traps, AP accepted 9 out of 20 times.\n",
      "With confidence 1.0 AP with 7 traps certifies that VD is upper-bounded by 0.53125\n",
      "\n",
      "With 8 traps, AP accepted 7 out of 20 times.\n",
      "With confidence 1.0 AP with 8 traps certifies that VD is upper-bounded by 0.6296296296296298\n",
      "\n",
      "With 9 traps, AP accepted 11 out of 20 times.\n",
      "With confidence 1.0 AP with 9 traps certifies that VD is upper-bounded by 0.33999999999999986\n"
     ]
    }
   ],
   "source": [
    "min_traps = 4\n",
    "max_traps = 10\n",
    "\n",
    "\n",
    "for num_trap_circs in range(min_traps,max_traps): \n",
    "    \n",
    "    test_4 = AccreditationFitter()\n",
    "    for run in range(d):\n",
    "\n",
    "        # Create target and trap circuits with random Pauli gates\n",
    "        circuit_list, postp_list, v_zero = accsys.generate_circuits(num_trap_circs)\n",
    "\n",
    "        job = execute(circuit_list,\n",
    "                      simulator,\n",
    "                      noise_model=noise_model,\n",
    "                      basis_gates=basis_gates,\n",
    "                      shots=1,\n",
    "                      backend_options={'max_parallel_experiments': 0})\n",
    "        result = job.result()\n",
    "\n",
    "        # Post-process the outputs and see if the protocol accepts\n",
    "        test_4.single_protocol_run(result, postp_list, v_zero)\n",
    "\n",
    "    print(\"\\nWith\", num_trap_circs,\n",
    "          \"traps, AP accepted\", test_4.N_acc,              \n",
    "          \"out of\", test_4.num_runs, \"times.\")\n",
    "    test_4.bound_variation_distance(theta)\n",
    "    print(\"With confidence\", test_4.confidence,\n",
    "          \"AP with\", num_trap_circs,\n",
    "          \"traps certifies that VD is upper-bounded by\", test_4.bound)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "celltoolbar": "Tags",
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}